/*
Titulo: Valor Maximo                  Filename: maxMarquez.s
Autor: Alexis Eduardo Silva Bautista  Date: 7-Marzo-2017
Description: Se encuentra el valor maximo de una lista dada de numeros.
Input:-
Output: Numero maximo
*/

@ maxSilva.s
@ Encontrar el mazimo de una lista de numeros. https://gcc.godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(j:1,options:(colouriseAsm:%270%27,compileOnChange:%270%27),source:%27%23include+%3Ciostream%3E%0Aint+main(+)%0A%7B%0A%09for+(unsigned+int+rep+%3D+0%3B+rep+!!%3D+5%3B+rep%2B%2B)%0A%09%09std::cout+%3C%3C+rep%3B%0A%7D%27),l:%275%27,n:%271%27,o:%27C%2B%2B+source+%231%27,t:%270%27)),k:50,l:%274%27,n:%270%27,o:%27%27,s:0,t:%270%27),(g:!((h:compiler,i:(source:1),l:%275%27,n:%270%27,o:%27%231+with+x86-64+gcc+6.2%27,t:%270%27)),k:50,l:%274%27,n:%270%27,o:%27%27,s:0,t:%270%27)),l:%272%27,n:%270%27,o:%27%27,t:%270%27)),version:4
@ 

@ r1 - se usa para identificar la direccion de la informacion de los elementos
@ r0 - se usa para el elemento mas largo
@ r3 - se usa para el dato actual

.section      .data

numbers:                  @los datos que se van a usar.
.long   3,67,34,222,45,75,54,34,44,33,22,11,66,0

.globl  _start

_start:
ldr %r1, =numbers         @ se da r1 para dar la direccion de inicio de "numeros"
ldr %r3, [%r1]            @ r3 se inicializa con el primer numero
mov %r0, %r3              @ al inicio el numero actual debe ser el mas largo

loop:
  cmp %r3, $0             @ revisa si r3 contiene un cero (el final de la lista)
  beq exit                @ si es asi, salir
  ldr %r3, [%r1,#4]!      @ carga el siguiente elemento a r3
  cmp %r3, %r0            @ compara r0 y r3
  ble loop                @ se inicia el civlo si r3 <= r0
  mov %r0, %r3            @ caso contrario se inserta r3 en r0
  bal loop                @ se inicia el ciclo (se deriva siempre)
  
exit:                     @ el valor mas largo ahora esta en r0
mov %r7, $1               @ se prepara para salor
svc $0                    @ se despierta el kernel (nucleo)
.end                      @ se marca el final del codigo
